home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swaga_c.zip / CHARS.SWG / 0002_Character Case.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  3KB  |  105 lines

  1. {
  2. BO BendTSEN
  3.  
  4.   Upper/lower changing of Strings are always a difficult problem,
  5.   but as a person living in Denmark i must normally care about
  6.   danish Characters, i know a lot of developers does not care about
  7.   international Character and just use the normal UPCASE routines.
  8.   I advise you to use these routines or make some that has the
  9.   same effect, so we will not have any problems when searching for
  10.   uppercased Strings.
  11.  
  12.   Made available to everyone 1993 by Bo Bendtsen 2:231/111 +4542643827
  13.  
  14.      Lowcase   Upper/high/capital letters
  15.               Æ
  16.      ¢         ¥
  17.      å         Å
  18.      ä         Ä
  19.      ç         Ç
  20.      é         É
  21.      ö         Ö
  22.      ñ         Ñ
  23.      ü         Ü
  24.  
  25. }
  26.  
  27. Function UpChar(Ch : Char) : Char;
  28. { Uppercase a Char }
  29. begin
  30.   If Ord(Ch) In [97..122] Then Ch := Chr(Ord(Ch) - 32)
  31.   Else If Ord(Ch) > 90 Then
  32.     If Ch='' Then Ch:='Æ'
  33.     Else If Ch='¢' Then Ch:='¥' Else If Ch='å' Then Ch:='Å'
  34.     Else If Ch='ä' Then Ch:='Ä' Else If Ch='ç' Then Ch:='Ç'
  35.     Else If Ch='é' Then Ch:='É' Else If Ch='ö' Then Ch:='Ö'
  36.     Else If Ch='ñ' Then Ch:='Ñ' Else If Ch='ü' Then Ch:='Ü';
  37.   UpChar:=Ch;
  38. end;
  39.  
  40. Function StUpCase(S : String) : String;
  41. { Uppercase a String }
  42. Var
  43.   SLen : Byte Absolute S;
  44.   x    : Integer;
  45. begin
  46.   For x := 1 To SLen Do S[x]:=UpChar(S[x]);
  47.   StUpCase := S;
  48. end;
  49.  
  50. Function LowChar(Ch : Char) : Char;
  51. { lowercase a Char }
  52. begin
  53.   If Ord(Ch) In [65..90] Then Ch := Chr(Ord(Ch) + 32)
  54.   Else If Ord(Ch) > 122 Then
  55.     If Ch='Æ' Then Ch := ' '
  56.     Else If Ch='¥' Then Ch:='¢' Else If Ch='Å' Then Ch:='å'
  57.     Else If Ch='Ä' Then Ch:='ä' Else If Ch='Ç' Then Ch:='ç'
  58.     Else If Ch='É' Then Ch:='é' Else If Ch='Ö' Then Ch:='ö'
  59.     Else If Ch='Ñ' Then Ch:='ñ' Else If Ch='Ü' Then Ch:='ü';
  60.   LowChar := Ch;
  61. end;
  62.  
  63. Function StLowCase(S : String) : String;
  64. { Lowercase a String }
  65. Var
  66.   SLen : Byte Absolute S;
  67.   i    : Integer;
  68. begin
  69.   For i := 1 To SLen Do S[i]:=LowChar(S[i]);
  70.   StLowCase := S;
  71. end;
  72.  
  73. Function StToggleCase(S : String) : String;
  74. { lower = upper and upper = lower }
  75. Var
  76.   SLen : Byte Absolute S;
  77.   i    : Integer;
  78. begin
  79.   For i := 1 To SLen Do
  80.   begin
  81.     If Ord(S[i]) In [65..90] Then S[i] := Chr(Ord(S[i]) + 32)
  82.     Else If Ord(S[i]) In [97..122] Then S[i] := Chr(Ord(S[i]) - 32)
  83.     Else If Pos(S[i],'¢åäçéöñü') <> 0 Then S[i]:=UpChar(S[i])
  84.     Else If Pos(S[i],'ÆÅ¥ÇÄÖÉÜÑ')<> 0 Then S[i]:=LowChar(S[i]);
  85.   end;
  86.   StToggleCase := S;
  87. end;
  88.  
  89. Function StSmartCase(S : String) : String;
  90. { bO bEnDTSen will be converted into : Bo Bendtsen }
  91. Var
  92.   SLen : Byte Absolute S;
  93.   i    : Integer;
  94. begin
  95.   s:=StLowCase(s);
  96.   For i := 1 To SLen Do
  97.   begin
  98.     If i=1 Then S[1]:=UpChar(S[1])
  99.     Else if S[i-1]=' ' Then S[i]:=UpChar(S[i])
  100.     Else if (Ord(S[i-1]) In [32..64]) And (S[i-1]<>'''') Then
  101. S[i]:=UpChar(S[i]);
  102.   end;
  103.   StSmartCase := S;
  104. end;
  105.